home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
nrpas13.arc
/
SORT3.DEM
< prev
next >
Wrap
Text File
|
1991-05-01
|
2KB
|
62 lines
PROGRAM d8r6(input,output,dfile);
(* driver for routine SORT3 *)
CONST
nlen=64;
TYPE
glsarray = ARRAY [1..nlen] OF real;
gliarray = ARRAY [1..nlen] OF integer;
VAR
i,j : integer;
a,b,c,wksp : glsarray;
indx : gliarray;
amsg1 : PACKED ARRAY [1..40] OF char;
amsg2 : PACKED ARRAY [1..24] OF char;
n1,n2 : integer;
amsg,bmsg,cmsg : PACKED ARRAY [1..nlen] OF char;
dfile : text;
(*$I MODFILE.PAS *)
(*$I INDEXX.PAS *)
(*$I SORT3.PAS *)
BEGIN
amsg1 := 'i''d rather have a bottle in front of me ';
n1 := 40;
amsg2 := 'than a frontal lobotomy.';
n2 := 24;
FOR i := 1 to n1 DO amsg[i] := amsg1[i];
FOR i := 1 to n2 DO amsg[n1+i] := amsg2[i];
writeln;
writeln ('original message:');
writeln (amsg);
(* read array of random numbers *)
glopen(dfile,'tarray.dat');
readln(dfile);
FOR i := 1 to nlen DO read(dfile,a[i]);
close(dfile);
(* create array b and array c *)
FOR i := 1 to nlen DO BEGIN
b[i] := i;
c[i] := nlen+1-i
END;
(* sort array a while mixing ib and ic *)
sort3(nlen,a,b,c,wksp,indx);
(* scramble message according to array b *)
FOR i := 1 to nlen DO BEGIN
j := round(b[i]);
bmsg[i] := amsg[j]
END;
writeln;
writeln ('scrambled message:');
writeln (bmsg);
(* unscramble according to array c *)
FOR i := 1 to nlen DO BEGIN
j := round(c[i]);
cmsg[j] := bmsg[i]
END;
writeln;
writeln ('mirrored message:');
writeln (cmsg)
END.